<?php
/**
 * Created by PhpStorm.
 * Login: 曹旺
 * Date: 2018-03-07
 * Time: 16:09
 */

namespace app\index\controller;

use think\Cache;
use think\Controller;
use phpmailer\phpmailer;
use think\Db;

class Base extends Controller
{
    public $order_number;

    /**
     * @return array|false|string
     * 获取客户端ip
     * @author  曹旺
     * @data  13:42
     */
    public function get_client_ip() {
        $cip = 'unknown';
        if ($_SERVER['REMOTE_ADDR']) {
            $cip = $_SERVER['REMOTE_ADDR'];
        }else if(getenv("REMOTE_ADDR")){
            $cip = getenv("REMOTE_ADDR");
        }
        return $cip;
    }

    /**
     * @param $url
     * @param $data
     * @return mixed
     * post提交
     * @author  曹旺
     * @data  13:43
     */
    public function http_post($url, $data) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_HEADER,0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $res = curl_exec($ch);
        curl_close($ch);
        return $res;
    }
    /**
     * @param $key
     * @param $value
     * @return int
     *  //sign加密验证
     * @author  曹旺
     * @data  11:18
     */
    public function encryption($key, $value)
    {
        $password = md5(md5($value . 'Group') . 'NoBao');
        //return $password;
        if ($key == $password) {
            return 1;
        } else {
            return 0;
        }
    }


    /**
     * @param $token
     * @return int
     * //token验证
     * @author  曹旺
     * @data  11:18
     */
    public function encryption_token($token)
    {
        //$phone=Cache::get('phone');
        $token_true = Cache::get($token);
        //return $token_true;
        if ($token_true) {
            return 1;
        } else {
            return 0;
        }
    }

    /**
     * @param $phonenumber ：要验证的手机号
     * @return int
     * 验证手机号
     * @author  曹旺
     * @data  14:36
     */
    public function phone_pass($phonenumber)
    {
        if (preg_match("/^1[34578]{1}\d{9}$/", $phonenumber)) {
            return 1;
        } else {
            return 0;
        }
    }


    /**
     * @param int $len
     * @return int
     * 生成邮箱验证码
     * @author  曹旺
     * @data  16:31
     */
    public function sendRand($len = 6)
    {
        $min = pow(10, $len - 1);
        $max = pow(10, $len) - 1;
        return rand($min, $max);
    }


    /**
     * @param int $len
     * @return array
     * 生成手机验证码
     * @author  曹旺
     * @data  11:17
     */
    public function send_phoneRand($len = 6)
    {
        $min = pow(10, $len - 1);
        $max = pow(10, $len) - 1;
        $rand= rand($min, $max);
        return array('code'=>$rand,"product"=>"dsd");
    }
    /**
     * @param $email
     * @param $rand
     * @param $ch_name
     * @return int
     * 发送邮件
     * @author  曹旺
     * @data  10:08
     */
    public function email($email, $rand, $type)
    {
        //发送邮件
        //$ch_name='dsfs';
        //
        //$rand=12345;
        //$email = 'cw1993teemo@163.com';//定义收件人的邮箱
        $mail = new PHPMailer();
        $mail->isSMTP();// 使用SMTP服务
        $mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
        $mail->Host = "smtp.mxhichina.com";// 发送方的SMTP服务器地址
        $mail->SMTPAuth = true;// 是否使用身份验证
        $mail->Username = "webmaster@importndsf.com";// 发送方的QQ邮箱用户名，就是自己的邮箱名
        $mail->Password = "JEzbyeD8UgIe";// 发送方的邮箱密码，不是登录密码,是qq的第三方授权登录码,要自己去开启,在邮箱的设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 里面
        $mail->SMTPSecure = "ssl";// 使用ssl协议方式,
        $mail->Port = 465;// QQ邮箱的ssl协议方式端口号是465/587

        $mail->setFrom("webmaster@importndsf.com", '挪波商贸');// 设置发件人信息，如邮件格式说明中的发件人,
        $mail->addAddress($email);// 设置收件人信息，如邮件格式说明中的收件人
        $mail->addReplyTo("webmaster@importndsf.com", "Reply");// 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
        //$mail->addCC("xxx@163.com");// 设置邮件抄送人，可以只写地址，上述的设置也可以只写地址(这个人也能收到邮件)
        //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
        //$mail->addAttachment("bug0.jpg");// 添加附件


        $mail->Subject = $type . "验证码";// 邮件标题
        //$mail->Body = $rand;// 邮件正文
        $mail->Body = '你好：你的验证码为' . $rand . '，5分钟之内有效，若验证码错误，5分钟之后可重新获取';// 邮件正文
        $mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容，如果不支持Html方式，就会用到这个，基本无用
        //return 111;
        if (!$mail->send()) {// 发送邮件
            return 0;
            //echo "Message could not be sent.";
            //echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
        } else {
            return 1;
            //echo '发送成功';
        }
    }

    /**
     * @return string
     * 生成订单编号（16进制）
     * @author  曹旺
     * @data  09:42
     */
    public function order_number()
    {
        $number = Db::table('nbsm_order')->field('order_number')->order('id desc')->find();
        if ($number) {
            $str='';
            $n=$number['order_number'];
            $nn=hexdec($n);
            $nnn=$nn+1; //加1
            $number_new=dechex($nnn);
            for ($i=0;$i<8-strlen($number_new);$i++){
                $str.='0';
            }
            $number_new_a=$str.$number_new;
            return $number_new_a;
        } else {
            return '00000001';
        }
    }

    /**
     * @return bool
     * 判断是不是微信浏览器
     * @author  曹旺
     * @data  10:32
     */
    function is_weixin() {
        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
            return true;
        } return false;
    }

    /**
     * 文件日志
     * author leesin.
     * date 2018/3/22
     */
    public static function fileLog($data, $name){
        $self=new self();
        $file = fopen($self::getPath().'/'.$name, 'a');
        fwrite($file, date('Y-m-d H:i:s').PHP_EOL);
        if(is_array($data) || is_object($data)){
            foreach($data as $k => $v){
                fwrite($file, $k.':'.$v.';');
            }
        }else{
            fwrite($file, $data);
        }
        fwrite($file, PHP_EOL.PHP_EOL);
        fclose($file);
    }

    /**
     * 获取日志文件路径
     * author leesin.
     * date 2018/3/22
     */
    public static function getPath(){
        //return RUNTIME_PATH;
        $path = RUNTIME_PATH . '/pay-log/' . date('Ym-d');
        if(!is_dir($path)){
            mkdir($path, 0777, true);
            chmod($path, 0777);
        }
        return $path;
    }

    /**
     * @param string $user_id
     * @return int
     * 去用户说对应的折扣率
     * @author  曹旺
     * @data  14:06
     */
    public function user_discount_rate($user_id=''){
        if (!empty($user_id) && $user_id!=''){
            $user_discount_rate=Db::table('nbsm_user')->field('discount_rate')->where(['id'=>$user_id,'state'=>1])->find();
            if (!empty($user_discount_rate)&&$user_discount_rate['discount_rate']!='' ){
                return $user_discount_rate['discount_rate'];
            }else{
                //没有此用户id时折扣率为1
                return 1;
            }
        }else{
            //没有用户id时折扣率为1
            return 1;
        }

    }


}